home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1995 #5 & #6
/
Amiga Plus CD - 1995 - No. 5 and 6.iso
/
pd
/
emulator
/
zxam spectrum
/
zxam_rexx
/
español
/
explodetap.zxam
< prev
next >
Wrap
Text File
|
1995-07-31
|
2KB
|
91 lines
/* este script descompone un fichero .TAP en sus correspondientes .header */
/* y .bytes colocandolos en el directorio que le digamos */
/* comprobamos si el emulador está presente */
address command
if ~show(ports,ZXAM_REXX) then do
requestchoice '>nil: title "ZXAM Script error..." body "No encuentro el puerto del emulador!!" gadgets "AARGH!"'
exit
end
/* antiguos parametros de la ventana */
oldname=zxamactname()
oldformat=zxamactformat()
oldsaveformat=zxamactsaveformat()
/* pedimos los ficheros a convertir */
'requestfile >t:zxamexplodetap.tmp "'zxamactloadpath()'" title "Elige fichero .TAP a descomponer..." pattern "#?.TAP"'
name=zxampploadfile('t:zxamexplodetap.tmp')
name=left(name,length(name)-1) /* eliminamos el LF */
/* ahora name contiene nombre+path */
/* pedimos el directorio destino */
'requestfile >t:zxamexplodetap.tmp "'zxamactsavepath()'" drawersonly savemode'
destdrawer=zxampploadfile('t:zxamexplodetap.tmp')
destdrawer=strip(left(destdrawer,length(destdrawer)-1),'B','"') /* eliminamos el LF y las comillas */
if name='' then exit
ZXAMEnableAbort() /* activa gadget Abort ARexx */
name=strip(left(name,pos('"',name,2)),'B','"') /* eliminamos comillas */
/* ahora le quitamos la extensión al nombre */
namenoext=zxamfilepart(name)
if lastpos('.',namenoext)~=0 then namenoext=left(namenoext,lastpos('.',namenoext)-1)
/* abrimos el fichero */
if ~open('fichero',name,'R') then signal cleanup
counter=0
zxamnameformat('Procesando "'zxamfilepart(name)'"','Espera...')
/* descomponemos el fichero */
do forever
if ZXAMReadAbort() then signal cleanup2
/* procesamos el fichero */
dummy=readch('fichero',2) /* leemos dos bytes */
if dummy='' then signal cleanup2
longblock=c2d(reverse(dummy)) /* fomato invertido Z80 */
block=readch('fichero',longblock) /* leemos el bloque de datos */
defext='.bytes'
if ((longblock=19)&(left(block,1)='00'x)) then defext='.header'
/* pues tenemos que hacer el save */
newname=namenoext''counter''defext
if ~open('fichero2',zxamjoinpathname(destdrawer,newname),'W') then signal cleanup2
dummy=writech('fichero2',block)
dummy=close('fichero2')
if ~((longblock=19)&(left(block,1)='00'x)) then counter=counter+1
end
cleanup2:
dummy=close('fichero')
cleanup:
if oldname='' then
zxamclearnameformat()
else
zxamnameformat(oldname,oldformat)
zxamsaveformat(oldsaveformat)
exit